index

library(tidyverse)
felinos <-
  read_delim(
    file = "felinos.csv",
    col_select = c(
      "species",
      "stateProvince",
      "locality",
      "eventDate",
      "decimalLongitude",
      "decimalLatitude",
    ) 
  )

felinos <-
  felinos |>
  rename(
    especie = species,
    provincia = stateProvince,
    localidad = locality,
    fecha = eventDate,
    long= decimalLongitude,
    lat= decimalLatitude
  )

felinos <-
  felinos |>
  mutate(fecha = as.Date(fecha, format = "%d/%m/%Y"))
library(DT)

felinos |>
  select(especie, provincia, localidad, fecha)|>
  datatable(options = list(
    pageLength = 5,
    language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
  ))
felinos <-
  felinos |>
  mutate(year = as.numeric(format(fecha,'%Y'))) |>
  mutate(month = as.numeric(format(fecha,'%m'))) |> 
  arrange((month))|>
  mutate(day = as.numeric(format(fecha,'%d')))
library(plotly)
grafico_barras_ggplot2 <-
felinos |>
  ggplot(aes(x = month, fill = especie)) +
  scale_x_continuous(breaks = seq(1,12,1))+
  scale_x_continuous(breaks = seq(1,12,1), labels = c("1" = "Enero", "2" = "Febrero", "3" = "Marzo", "4" = "Abril", 
           "5" = "Mayo", "6" = "Junio", "7" = "Julio", "8" = "Agosto", 
           "9" =  "Septiembre", "10" =  "Octubre", "11" =  "Noviembre", "12" =  "Diciembre"))+
  geom_bar() +
  ggtitle("Cantidad de Registros por Especie en Cada mes") +
  xlab("meses") +
  ylab("Cantidad") +
  labs(fill = "Especie") +
  theme_minimal()

# Gráfico de barras plotly
ggplotly(grafico_barras_ggplot2) |> 
  config(locale = 'es')
library(sf)
ASP <-
  st_read(
    "Areassilvestresprotegidas.shp",
    quiet = TRUE # para evitar el despliegue de mensajes
  )
st_crs(ASP)
Coordinate Reference System:
  User input: CR05 / CRTM05 
  wkt:
PROJCRS["CR05 / CRTM05",
    BASEGEOGCRS["CR05",
        DATUM["Costa Rica 2005",
            ELLIPSOID["WGS 84",6378137,298.257223563,
                LENGTHUNIT["metre",1]]],
        PRIMEM["Greenwich",0,
            ANGLEUNIT["degree",0.0174532925199433]],
        ID["EPSG",5365]],
    CONVERSION["Costa Rica TM 2005",
        METHOD["Transverse Mercator",
            ID["EPSG",9807]],
        PARAMETER["Latitude of natural origin",0,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8801]],
        PARAMETER["Longitude of natural origin",-84,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8802]],
        PARAMETER["Scale factor at natural origin",0.9999,
            SCALEUNIT["unity",1],
            ID["EPSG",8805]],
        PARAMETER["False easting",500000,
            LENGTHUNIT["metre",1],
            ID["EPSG",8806]],
        PARAMETER["False northing",0,
            LENGTHUNIT["metre",1],
            ID["EPSG",8807]]],
    CS[Cartesian,2],
        AXIS["northing (N)",north,
            ORDER[1],
            LENGTHUNIT["metre",1]],
        AXIS["easting (E)",east,
            ORDER[2],
            LENGTHUNIT["metre",1]],
    USAGE[
        SCOPE["Cadastre, engineering survey, topographic mapping (large and medium scale)."],
        AREA["Costa Rica - onshore and offshore east of 86°30'W."],
        BBOX[2.21,-86.5,11.77,-81.43]],
    ID["EPSG",5367]]
# Transformación del CRS del objeto provincias a WGS84 (EPSG = 4326)
ASP <-
  ASP |>
  st_transform(4326)
library(leafem)
library(leaflet)
library(leaflet.extras)
library(leaflet.providers)
library(terra)
library(raster)
library(rgdal)


altitud <- rast("altitud.tif")

felinos3 <-
  st_as_sf(felinos, coords = c("long", "lat"))

st_crs(felinos3) <- 4326


leaflet() |>
  setView(# centro y nivel inicial de acercamiento
    lng = -84.19452,
    lat = 9.572735,
    zoom = 7) |>
  addTiles(group = "OpenStreetMap") |>
  addProviderTiles(providers$Esri.NatGeoWorldMap)|>
  addRasterImage(raster(altitud))|>
  addPolygons(
    # capa de provincias (polígonos)
    data = ASP,
    color = "black",
    fillColor = "transparent",
    stroke = TRUE,
    weight = 1.0
  ) |>
  addCircleMarkers(
    # capa de registros de presencia (puntos)
    data = felinos3,
    stroke = F,
    radius = 4,
    fillColor = 'blue',
    fillOpacity = 1,
    group = "Felinos",
    popup = paste(
      paste0("<strong>Especie: </strong>", felinos$especie),
      paste0("<strong>Localidad: </strong>", felinos$localidad),
      paste0("<strong>Fecha: </strong>", felinos$fecha)
    )
  ) |>
  addLayersControl(
    baseGroups = c("OpenStreetMap", "Esri.NatGeoWorldMap"),
    overlayGroups = c("Felinos", "altitud", "ASP")) |> # control de capas
  addResetMapButton() |> # botón de reinicio
  addSearchOSM() |> # búsqueda en OSM
  addMouseCoordinates() |> # coordenadas del puntero del ratón
  addScaleBar(position = "bottomleft", options = scaleBarOptions(imperial = FALSE)) |> # barra de escala
  addMiniMap(position = "bottomleft")  # mapa de ubicación